﻿using System;

namespace Casimeda.Framework.Dependency
{
    /// <summary>
    /// This is the interface to generate concrete IoC container.
    /// </summary>
    public interface IDependencyContainerFactory
    {
        /// <summary>
        /// Creates this instance.
        /// </summary>
        /// <returns>An instance of the Container</returns>
        IDependencyContainer Create();

        /// <summary>
        /// Creates the installer.
        /// </summary>
        /// <returns></returns>
        IDependencyInstaller CreateInstaller();

        /// <summary>
        /// Creates this instance.
        /// </summary>
        /// <param name = "configuration">The configuration.</param>
        /// <returns>An instance of the Container</returns>
        IDependencyContainer Create(String configuration);
    }
}
